package com.ruoyi.factorydata.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.factorydata.domain.ProjectProductionPlan;
import com.ruoyi.factorydata.domain.dto.ProjectProductionPlanDTO;
import com.ruoyi.factorydata.domain.vo.ProjectProductionPlanVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 生产计划Mapper接口
 *
 * @author ruoyi
 * @date 2025-07-26
 */
public interface ProjectProductionPlanMapper extends BaseMapper<ProjectProductionPlan> {
    /**
     * 查询生产计划
     *
     * @param id 生产计划主键
     * @return 生产计划
     */
    public ProjectProductionPlan selectProjectProductionPlanById(Long id);

    /**
     * 查询生产计划列表
     *
     * @param projectProductionPlan 生产计划
     * @return 生产计划集合
     */
    public List<ProjectProductionPlan> selectProjectProductionPlanList(ProjectProductionPlan projectProductionPlan);


    List<ProjectProductionPlanVo> selectProjectProductionPlanListVo(ProjectProductionPlanDTO projectProductionPlanDTO);
    /**
     * 新增生产计划
     *
     * @param projectProductionPlan 生产计划
     * @return 结果
     */
    public int insertProjectProductionPlan(ProjectProductionPlan projectProductionPlan);

    /**
     * 修改生产计划
     *
     * @param projectProductionPlan 生产计划
     * @return 结果
     */
    public int updateProjectProductionPlan(ProjectProductionPlan projectProductionPlan);

    /**
     * 删除生产计划
     *
     * @param id 生产计划主键
     * @return 结果
     */
    public int deleteProjectProductionPlanById(Long id);

    /**
     * 批量删除生产计划
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProjectProductionPlanByIds(Long[] ids);

    /**
     * 计划已排产数量
     *
     * @param projectId  计划id
     * @param materialId 产品id
     */
    Long sumScheduledProductionByProject(@Param("projectId") Long projectId,
                                         @Param("materialId") Long materialId);
}